from core.query.query_processor import QueryProcessor
from config.config import (
    FILE_PATH, EXPLANATION_FILE, 
    REMOTE_API_KEY, REMOTE_API_ENDPOINT, REMOTE_MODEL_NAME, 
    API_ENDPOINT, LOCAL_MODEL_NAME
)
from core.memory.session_manager import SessionManager
from core.utils.logging_handler import LoggingHandler

# 初始化日志记录器
logger = LoggingHandler().get_logger()

def main():
    logger.info("应用程序启动")
    # 初始化会话管理器
    session_manager = SessionManager()
    try:    
        while True:
            # 获取用户输入
            user_input = input("请输入您的查询内容（输入 'exit' 结束对话）: ")
            logger.info(f"用户输入: {user_input}")
            
            if user_input.lower() == 'exit':
                logger.info("用户终止对话")
                print("结束对话。")
                break

            data_file = FILE_PATH
            explanation_file = EXPLANATION_FILE
            api_key = REMOTE_API_KEY  # 从配置文件中获取API Key
            base_url = REMOTE_API_ENDPOINT  # 从配置文件中获取远程API的基础URL
            local_model_name = LOCAL_MODEL_NAME  # 从配置文件中获取本地模型名称
            remote_model_name = REMOTE_MODEL_NAME  # 从配置文件中获取远程模型名称

            # 初始化 QueryProcessor 并传递对话历史，使用远程模型
            processor = QueryProcessor(
                user_input=user_input,
                file_path=data_file,
                api_key=api_key,
                base_url=base_url,
                local_model_name=local_model_name,
                remote_model_name=remote_model_name,
                explanation_file=explanation_file,
                use_remote=True  # 使用远程模型
            )
            
            # 处理用户输入
            processor.process()

    except Exception as e:
        logger.error(f"发生异常: {e}", exc_info=True)
        
if __name__ == "__main__":
    main()



